<?php

class fZipEdit extends aFeature {


   public function __construct() {
      $this->_acl = new AccessControlList();
      $this->_acl->setGranted(3); $this->_acl->setGranted(7); 
   }

   public static function getTocEntry() {
      return "Ajout des codes postaux";
   }

   public static function getRealName() {
		return "Ajout des codes postaux";
	}
	
	public static function getSemantic() {
		$res  = "Cette fonctionalité permet de faire des ajouts dans la base de données des codes postaux présentes dans le système.";
		return $res;
	}


   protected function run() {
     $valid = PropRetriever::getProp($_POST,"valid");
     if ($valid != "")
     	return $this->addZip();
     else
		 	return $this->display(array());
   }
   
	private function headers() {
	$head = 
	$head =<<<EOS
<h1> Ajout d'un Code Postal</h1>

<h2> Ajout d'un code postal dans le système </h2>
<p>   <span class="error"> Si la ville a ajouter est une ville étrangère, 
  <a href="#" onClick="foreignCity()"> cliquez ici !</a> </span>
</p>
EOS;
	return $head;
	}
	
	
	private function addZip() {
	
		// Recupération des infos
		$zip = PropRetriever::getProp($_POST,"cityZip");
		$name = stripslashes(PropRetriever::getProp($_POST,"cityName"));
		
		// Verification d'erreurs
		$errors = array();
		if (! is_numeric($zip) && $zip != City::$ForeignCity)
			$errors["zip"] = "Le code postal doit être numérique !";
		if ($zip != City::$ForeignCity && strlen($zip) != 5)
			$errors["zip"] = "Le code postal doit comporter <strong>5</strong> caractères";
		if (! is_string($name))
			$errors["name"] = "Le nom de ville doit être une chaîne de caractères !";


		$newCity = new City($zip,$name);
		if (count($errors) != 0)
			return $this->display($errors);
		
		// A t'on déja ajouté cette ville ?
		$lastInsert = Login::LastInsert();
		if ($lastInsert["ClassName"] == "City") {
			$lastCity = City::read($lastInsert["LastId"]);
			if (! $lastCity->soundsLike($newCity))
				$newCity->create();
			else
				$newCity = $lastCity;
		}
		else 
			$newCity->create();

		Login::LastInsert($newCity->tag());
		
		$page = $this->display(array());
		$page .= "<h2> Ajout effectué avec succès !</h2>";
		$page .= $newCity->displayLong();
		return $page;
	}
	
	
	private function display($errors) {
		$page = $this->headers();

		$labels = array();
		
		if (PropRetriever::getProp($errors, "zip") != "")
			$labels["zip"] = "class=\"error\"";
		else
		 	$labels["zip"] = "";
		 	
		if (PropRetriever::getProp($errors, "name") != "")
			$labels["name"] = "class=\"error\"";
		else
			$labels["name"] = "";
		
		
		$zip = PropRetriever::getProp($_POST,"cityZip");
		$name = stripslashes(PropRetriever::getProp($_POST,"cityName"));
		
		$page .= <<<EOS

   <div align="center" style=\"float: left;"\>    
    <form method="post" accept-charset="utf-8" action="${_SERVER['PHP_SELF']}">
    <fieldset>
      <legend> Informations sur la Localité </legend>
      <br />
      <label>
        <span ${labels["name"]}> Nom: </span>
        <input type="text" name="cityName" class="edit" value="${name}"/> &nbsp; &nbsp;
      </label>
      <br />
      <div id="cityElems">
      <label>
        <span ${labels["zip"]}> Code Postal : </span>
        <input type="text" name="cityZip" class="edit" value="${zip}"/> &nbsp; &nbsp;
      </label>
      </div>
      <br />
      <input type="submit" name="valid"  value="Ajouter" class="button" />
      &nbsp;&nbsp;
      <input type="reset" name="reset"  value="Mettre a zéro" class="button" />
    </fieldset>
    </form>
   </div>
   </div>
EOS;
		
		if (count($errors) == 0)
			return $page;
		// Affichage des erreurs :
		$errorDisplay = "<p> <strong> Problèmes détectés </strong>: <ul> ";
		foreach($errors as $k =>$v)
			$errorDisplay .= "<li> <span class=\"error\">${v} </span></li>";
		return $page .$errorDisplay . "</ul></p>";
	}
   

}


?>